﻿using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZR.Model.Models.ProductionControl;

namespace CKS.PLC.Action
{
    public  abstract partial class PLCAction
    {
        /// <summary>
        /// 热重载后输出此版本信息
        /// </summary>
        public static void ShowVersion()
        {
            EventBus.AddLog("CKS.PLC.Action:25.5.20.0606");
        }

        /// <summary>
        /// 获取字符串后缀
        /// </summary>
        /// <param name="content"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public string GetSuffix(string content, int len = 4)
        {
            if (content.IsNullOrEmpty())
                return "";
            if (content.Length < len)
                return "";
            return content.Substring(content.Length - len);
        }
        /// <summary>
        /// 从结尾提取条码和等级
        /// </summary>
        /// <param name="content"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public (string Code,string Grade) SplitSuffixGrade(string content)
        {

            if (content.IsNullOrEmpty() || content.Length <3)//字符串最少长度是3位
                return ("","");
            //示例 P1901991-11-D:SANH25191008657:F
            // 1. 处理空值/空白内容（避免空引用异常，返回空值元组）
            if (string.IsNullOrWhiteSpace(content))
            {
                return (string.Empty, string.Empty);
            }

            // 2. 核心校验：是否以「冒号+单个字符」结尾
            // 条件：长度≥2（确保有 ":X" 结构） + 倒数第2个字符是冒号 + 最后1个字符是有效字符（字母/数字，适配等级场景）
            bool isMatchSuffix = content.Length >= 2
                              && content[content.Length - 2] == ':'
                              && char.IsLetterOrDigit(content[content.Length - 1]);

            if (isMatchSuffix)
            {
                // 3. 匹配成功：拆分条码主体（去除末尾 ":X"）和等级（最后1个字符）
                string code = content.Substring(0, content.Length - 2);
                string grade = content.Substring(content.Length - 1, 1);
                return (code.Trim(), grade); // 条码主体自动去首尾空白（适配设备输出残留）
            }
            else
            {
                // 4. 不匹配：直接返回原始内容（去空白），等级为空
                return (content.Trim(), string.Empty);
            }
        }
    }
}
